
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //设计模式：在已有JS语法的基础上，进行语法整合（设计），形成一个固定模式（用法），每个设计模式都是解决某种问题
    //其他设计模式：工厂模式，目的的为了批量创建对象
    //设计模式一：单列模式，为了实现只创建一个对象
    //用立即执行函数包裹需要私有化的变量和函数，同时又要外暴露一些接口；利用闭包的特性来保存已创建的对象
    (function(){
        function Tank(){
            this.dom=null;//保存DOM节点
            this.speed=0//速度
            this.color='';//颜色
        }
        var instance=null//保存实例化对象
        function getInstance(){
            return instance || (instance=new Tank())
        }
        window.SingleTon={getInstance};//给window对象添加一个属性(将SingTon暴露在外部)
        //window对象身上的所有属性在使用的时候，都可省略window.前缀
    })()
    var a =SingleTon.getInstance();
    var b=SingleTon.getInstance();
    var c =SingleTon.getInstance();
    console.log(a,b,c);
    console.log(a==b);
    console.log(a==c);
    console.log(b==c);

</script>